package jp.co.nes.awssupport.common.bean;

import java.util.Map;

import org.apache.commons.lang3.builder.ReflectionToStringBuilder;

import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBHashKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBRangeKey;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBTable;

/**
 * アプリケーション情報です。
 */
@DynamoDBTable(tableName = "AppInfo")
public class AppInfoBean extends BaseBean {

    /** serialVersionUID */
    private static final long serialVersionUID = 1L;

    /** カテゴリ */
    private String category;

    /** 番号 */
    private int number;

    /** 情報マップ */
    private Map<String, String> info;

    /**
     * デフォルトコンストラクタです。
     */
    public AppInfoBean() {
    }

    /**
     * カテゴリを返却します。
     *
     * @return カテゴリ
     */
    @DynamoDBHashKey
    public String getCategory() {
        return category;
    }

    /**
     * カテゴリを設定します。
     *
     * @param category カテゴリ
     */
    public void setCategory(String category) {
        this.category = category;
    }

    /**
     * 番号を返却します。
     *
     * @return 番号
     */
    @DynamoDBRangeKey
    public int getNumber() {
        return number;
    }

    /**
     * 番号を設定します。
     *
     * @param number 番号
     */
    public void setNumber(int number) {
        this.number = number;
    }

    /**
     * 情報マップを返却します。
     *
     * @return 情報マップ
     */
    public Map<String, String> getInfo() {
        return info;
    }

    /**
     * 情報マップを設定します。
     *
     * @param info 情報マップ
     */
    public void setInfo(Map<String, String> info) {
        this.info = info;
    }

    /**
     * 情報マップを除外した文字列表現を返却します。
     */
    @Override
    public String toString() {
        return new ReflectionToStringBuilder(this).setExcludeFieldNames(new String[] { "info" }).toString();
    }
}
